package ru.niir.goodfil.db.handlers.hack;

import org.hibernate.impl.StatelessSessionImpl;
import org.hibernate.impl.SessionFactoryImpl;
import org.hibernate.*;

import java.sql.Connection;
import java.io.Serializable;

public class MyStatelessSession implements StatelessSession
{
    private final StatelessSession ss;

    public MyStatelessSession(StatelessSession ss)
    {
        this.ss = ss;
    }

    @Override
    public void close()
    {
        ss.close();
    }

    @Override
    public Serializable insert(Object o)
    {
        return ss.insert(o);
    }

    @Override
    public Serializable insert(String s, Object o)
    {
        return ss.insert(s, o);
    }

    @Override
    public void update(Object o)
    {
        ss.update(o);
    }

    @Override
    public void update(String s, Object o)
    {
        ss.update(s, o);
    }

    @Override
    public void delete(Object o)
    {
        ss.delete(o);
    }

    @Override
    public void delete(String s, Object o)
    {
        ss.delete(s, o);
    }

    @Override
    public Object get(String s, Serializable serializable)
    {
        return ss.get(s, serializable);
    }

    @Override
    public Object get(Class aClass, Serializable serializable)
    {
        return ss.get(aClass, serializable);
    }

    @Override
    public Object get(String s, Serializable serializable, LockMode lockMode)
    {
        return ss.get(s, serializable, lockMode);
    }

    @Override
    public Object get(Class aClass, Serializable serializable, LockMode lockMode)
    {
        return ss.get(aClass, serializable, lockMode);
    }

    @Override
    public void refresh(Object o)
    {
        ss.refresh(o);
    }

    @Override
    public void refresh(String s, Object o)
    {
        ss.refresh(s, o);
    }

    @Override
    public void refresh(Object o, LockMode lockMode)
    {
        ss.refresh(o, lockMode);
    }

    @Override
    public void refresh(String s, Object o, LockMode lockMode)
    {
        ss.refresh(s, o, lockMode);
    }

    @Override
    public Query createQuery(String s)
    {
        return new MyQuery(ss.createQuery(s));
    }

    @Override
    public Query getNamedQuery(String s)
    {
        return new MyQuery(ss.getNamedQuery(s));
    }

    @Override
    public Criteria createCriteria(Class aClass)
    {
        return ss.createCriteria(aClass);
    }

    @Override
    public Criteria createCriteria(Class aClass, String s)
    {
        return ss.createCriteria(aClass, s);
    }

    @Override
    public Criteria createCriteria(String s)
    {
        return ss.createCriteria(s);
    }

    @Override
    public Criteria createCriteria(String s, String s1)
    {
        return ss.createCriteria(s, s1);
    }

    @Override
    public SQLQuery createSQLQuery(String s) throws HibernateException
    {
        return ss.createSQLQuery(s);
    }

    @Override
    public Transaction beginTransaction()
    {
        return ss.beginTransaction();
    }

    @Override
    public Transaction getTransaction()
    {
        return ss.getTransaction();
    }

    @Override
    public Connection connection()
    {
        return ss.connection();
    }
}
